package alto_nivel.compilador;

import alto_nivel.gals.ItemTabelaSimbolos;

public class NoPilhaOperandos {

    private NoPilhaOperandos prox;

    /**
     * valor atribuído ao nó (alto nível)
     */
    private int valor;

    /**
     * atributo/id alto nível
     */
    private ItemTabelaSimbolos item;

    /**
     * valor correspondente ao número do registrador associado a esse atributo
     */
    private int valorSequencial;

    /**
     * indica a criação de um registrador temporário para as operações matemáticas
     */
    private boolean resultadoTemporario;

    public int getValor() {
        return valor;
    }

    public void setValor(int valor) {
        this.valor = valor;
    }

    public NoPilhaOperandos getProx() {
        return prox;
    }

    public void setProx(NoPilhaOperandos prox) {
        this.prox = prox;
    }

    public ItemTabelaSimbolos getItem() {
        return item;
    }

    public void setItem(ItemTabelaSimbolos item) {
        this.item = item;
    }

    public int getValorSequencial() {
        return valorSequencial;
    }

    public void setValorSequencial(int valorSequencial) {
        this.valorSequencial = valorSequencial;
    }

    public boolean isResultadoTemporario() {
        return resultadoTemporario;
    }

    public void setResultadoTemporario(boolean resultadoTemporario) {
        this.resultadoTemporario = resultadoTemporario;
    }

    public String getRegistrador() {
        return item == null ? "R" + valorSequencial : item.getItemMonolitico();
    }

}
